import request from '@/utils/request'

// 查询BOM列表
export function listBom(query) {
  // 确保query参数存在
  const safeQuery = query || {};
  
  // 由于后端使用startPage()方法获取分页参数，必须以固定方式传递
  // 若依后端的startPage()使用pageNum和pageSize作为参数名称
  const pageNum = parseInt(safeQuery.pageNum) || 1;
  const pageSize = parseInt(safeQuery.pageSize) || 10;
  
  console.log("API方法收到分页参数: pageNum=" + pageNum + ", pageSize=" + pageSize);
  
  // 构建API请求参数
  const params = { ...safeQuery };
  
  // 处理模糊搜索参数
  if (safeQuery.bom_code) {
    console.log("处理模糊搜索参数:", {
      bom_code: safeQuery.bom_code,
    });
  }

  if (safeQuery.bom_id) {
    console.log("处理模糊搜索参数:", {
      bom_id: safeQuery.bom_id,
    });
  }

  if (safeQuery.product_name) {
    console.log("处理模糊搜索参数:", {
      product_name: safeQuery.product_name,
    });
  }

  if (safeQuery.bom_version) {
    console.log("处理模糊搜索参数:", {
      bom_version: safeQuery.bom_version,
    });
  }
  
  // 转换前端参数名称与后端对应
  if (safeQuery.bom_code) {
    params.bom_code = safeQuery.bom_code;
  }
  if (safeQuery.bom_id) {
    params.bom_id = safeQuery.bom_id;
  }
  if (safeQuery.bom_version) {
    params.bom_version = safeQuery.bom_version;
  }
  if (safeQuery.product_name) {
    params.product_name = safeQuery.product_name;
  }
  
  
  
  // 移除可能导致问题的参数
  delete params.pageNum;
  delete params.pageSize;
  
  console.log("API方法构建的请求参数:", JSON.stringify(params));
  
  // 使用若依框架的正确参数名称
  // 使用URL参数方式传递分页参数，避免与请求体冲突
  return request({
    url: '/ldzl-basic/bmd/list',
    method: 'post',
    // 必须添加params参数，而不是放在data中，因为startPage()会从params中获取分页信息
    params: {
      pageNum: pageNum,
      pageSize: pageSize
    },
    // 业务数据保持在body中
    data: params
  })
}

// 获取BOM详情
export function getBomDetail(id) {
  console.log('API调用getBomDetail，参数ID:', id);
  
  // 确保id是有效值
  if (!id) {
    console.error('getBomDetail: 无效的BOM ID');
    return Promise.reject(new Error('无效的BOM ID'));
  }
  
  // 注意：后端使用的是PathVariable，bom_id应该作为URL路径的一部分
  return request({
    url: '/ldzl-basic/bmd/detail/' + id,
    method: 'post'
    // 不需要data参数，因为id已经在URL中
  })
}

// 获取BOM头部详情
export function getBom(id) {
  console.log('API调用getBomDetail，参数ID:', id);
  
  // 确保id是有效值
  if (!id) {
    console.error('getBomDetail: 无效的BOM ID');
    return Promise.reject(new Error('无效的BOM ID'));
  }
  
  // 注意：后端使用的是PathVariable，bom_id应该作为URL路径的一部分
  return request({
    url: '/ldzl-basic/bmd/find/' + id,
    method: 'post'
    // 不需要data参数，因为id已经在URL中
  })
}






// 新增BOM
export function addBom(data) {
  return request({
    url: '/ldzl-basic/bmd',
    method: 'post',
    data: data
  })
}

// 修改BOM
export function updateBom(data) {
  return request({
    url: '/ldzl-basic/bmd',
    method: 'put',
    data: data
  })
}

// 删除BOM
export function delBom(id) {
  return request({
    url: '/ldzl-basic/bmd/dp/' + id,
    method: 'put'
  })
}
//批量删除
export function delBomBatch(ids) {
  return request({
    url: '/ldzl-basic/bmd/batch/' + ids,
    method: 'put'
  })
}

//查询BOM详情的物料

export function listBommate(query) {
  // 确保query参数存在
  const safeQuery = query || {};
  
  // 由于后端使用startPage()方法获取分页参数，必须以固定方式传递
  // 若依后端的startPage()使用pageNum和pageSize作为参数名称
  const pageNum = parseInt(safeQuery.pageNum) || 1;
  const pageSize = parseInt(safeQuery.pageSize) || 10;
  
  console.log("API方法收到分页参数: pageNum=" + pageNum + ", pageSize=" + pageSize);
  
  // 构建API请求参数
  const params = { ...safeQuery };
  
  console.log("查询物料参数:", JSON.stringify(params));
  
  // 确保有bom_id参数
  if (!params.bom_id) {
    console.error("缺少BOM ID参数!");
    return Promise.reject(new Error("缺少BOM ID参数"));
  }
  
  // 移除可能导致问题的参数
  delete params.pageNum;
  delete params.pageSize;
  
  console.log("API方法构建的请求参数:", JSON.stringify(params));
  
  // 使用若依框架的正确参数名称
  // 使用URL参数方式传递分页参数，避免与请求体冲突
  return request({
    url: '/ldzl-basic/bmd/find' , // 根据API需要将ID作为路径参数
    method: 'post',
    // 必须添加params参数，而不是放在data中，因为startPage()会从params中获取分页信息
    params: {
      pageNum: pageNum,
      pageSize: pageSize
    },
     data: params
  })
}


//查询工艺路线详细信息
export function listBomop(query) {
  // 确保query参数存在
  const safeQuery = query || {};
  
  // 由于后端使用startPage()方法获取分页参数，必须以固定方式传递
  // 若依后端的startPage()使用pageNum和pageSize作为参数名称
  const pageNum = parseInt(safeQuery.pageNum) || 1;
  const pageSize = parseInt(safeQuery.pageSize) || 10;
  
  console.log("API方法收到分页参数: pageNum=" + pageNum + ", pageSize=" + pageSize);
  
  // 构建API请求参数
  const params = { ...safeQuery };
  
  console.log("查询工艺路线参数:", JSON.stringify(params));
  
  // 确保有bom_id参数
  if (!params.bom_id) {
    console.error("缺少BOM ID参数!");
    return Promise.reject(new Error("缺少BOM ID参数"));
  }
  
  // 移除可能导致问题的参数
  delete params.pageNum;
  delete params.pageSize;
  
  console.log("API方法构建的请求参数:", JSON.stringify(params));
  
  // 使用若依框架的正确参数名称
  // 使用URL参数方式传递分页参数，避免与请求体冲突
  return request({
    url: '/ldzl-basic/bmd/find1' , // 根据API需要将ID作为路径参数
    method: 'post',
    // 必须添加params参数，而不是放在data中，因为startPage()会从params中获取分页信息
    params: {
      pageNum: pageNum,
      pageSize: pageSize
    },
     data: params
  })
}




